﻿
using System.Collections.Generic;

namespace System.IO
{
    public static class BinaryReaderExtentions
    {
        /// <summary>
        /// Признак конца потока
        /// </summary>
        /// <param name="reader">Объект чтения потока</param>
        /// <returns>Истина, если поток закончен</returns>
        public static bool IsEOF(this BinaryReader reader) { return reader.BaseStream.Position == reader.BaseStream.Length; }

        /// <summary>
        /// Получить перечисление, содержащее массивы байт заданной длины из потока 
        /// </summary>
        /// <param name="reader">Объект чтения потока данных</param>
        /// <param name="BufferSize">Размер буфера</param>
        /// <returns>Перечислитель</returns>
        public static IEnumerable<byte[]> GetByteBuffer(this BinaryReader reader, int BufferSize)
        {
            while(!reader.IsEOF())
            {
                var buffer = new byte[BufferSize];
                reader.Read(buffer, 0, BufferSize);
                yield return buffer;
            }
        }

        public static IEnumerable<char[]> GetCharBuffer(this BinaryReader reader, int BufferLength)
        {
            while(!reader.IsEOF())
            {
                var buffer = new char[BufferLength];
                reader.Read(buffer, 0, BufferLength);
                yield return buffer;
            }
        }
    }
}
